/***************************************************************
 *
 * Filename：SubWindow.h
 * Abstract：the design of chatting window
 * version ：1.0
 * 
 * Copyright (c) 2011 SCUT DT&P FY&XC
 * 
***************************************************************/ 

#include <QtGui>
#include <QtNetwork>
#include <QDebug>
#include "ipmsg.h"
#include "Serve.h"
#include "TCPServe.h"
#include "TCPClient.h"
#include "FileSendWindow.h"
#include "FileReveWindow.h"

class SubWindow : public QDialog
{
	Q_OBJECT

	public:
		SubWindow(Serve *ser,QString str);
		Serve *service;
                TCPServer *tcpServer;
                TCPClient *tcpClient;
		MessagePRO *msgmng;
	signals:
		void delSub(QString str);
	private:
		QWidget *messageWindow;
                FileSendWindow *FSWin;
                FileReveWindow *FRWin;

		//处理系统关闭事件
		void closeEvent(QCloseEvent *event);
		//根据flag编码UDP数据包并发送之
		void writeData(int flag);
		//初始化聊天室
                void initialize();
                //发送拒绝接收文件信息
                void sendRefuseMsg();

		//显示聊天记录的文本编辑框
		QTextEdit *recordTextEdit;
		//输入文本编辑框
		QTextEdit *inputTextEdit;
		QString message;
		//关于按钮和发送按钮
		QPushButton *aboutButton;
		QPushButton *sendButton;
		//右侧的用户列表，保存其他用户的登录昵称
		QListWidget *userListWidget;
		QListWidgetItem *userListWidgetItem;
		//退出按钮
		QPushButton *quitButton;
		//编辑inpuTextEdit的包括字体，颜色等行为的工具栏
		QToolBar *editToolBar;
		QComboBox *fontComboBox;
		QComboBox *sizeComboBox;
		QToolButton *boldButton;
		QToolButton *italicButton;
		QToolButton *underlineButton;
		QToolButton *colorButton;
		QToolButton *imageButton;
		QToolButton *fileButton;
                QStringList s;

        private slots:
		//发送聊天信息
		void slotsendMessage();
		//显示聊天信息
                void slotshowMessage(MessagePRO *);
		//设置字体尺寸
		void slotsetFontSize(const QString &);
		//设置粗体
		void slotsetBoldFont(bool);
		//设置字体颜色
		void slotsetFontColor();
		//打开图像文件
                void slotopenImage();
                //槽函数，设置输入字
                void slotsetFontFamily(const QString &);
		//选择发送文件
                void slotopenFileWindow();
                void sentFileName(QString);
		//开启发送按钮
		void slotenabledSendButton();
		//“关于”信息
		void slotabout();
                //接收文件处理
                void slotRevcFile(MessagePRO *);
                //拒绝接收文件
                void slotRefuseFile(MessagePRO *);
                //停止发送文件
                void slotstopsendfile();
};
